﻿#ifndef MIRAGON_EVENTLOOP_HPP
#define MIRAGON_EVENTLOOP_HPP

#include "config.h"
#include "types.hpp"

namespace miragon
{

class EventLoop : std::enable_shared_from_this<EventLoop> {
public:
    virtual void Quit(void) = 0;
    virtual int Run(void) = 0;
    virtual void DelayedTask(uint32_t ms, DelayedTaskFun task) = 0;
    virtual void PostEvent(void) = 0;

    MIRAGON_API static EventLoopPtrRef Create(void);
};

} // namespace miragon

#endif // MIRAGON_EVENTLOOP_HPP
